python-3.x - Python Thread 运行函数返回值
问题描述
我有 pandasDataframes,我想在上面应用一个函数。我希望有很多迭代,所以我认为使用多个threads
.
这是它的样子:
def my_function(data_inputs_train):
#..... do something with dataframe....
#..... group by for loops etc .......
#..... create new dataframe.....
return newPandasDataFrame
class myThread (threading.Thread):
def __init__(self, threadID, data_inputs_train):
threading.Thread.__init__(self)
self.threadID = threadID
self.data_inputs_train = data_inputs_train
def run(self):
result_df = my_function(data_inputs_train)
thread1 = myThread(1, data_inputs_train)
thread2 = myThread(2, data_inputs_train)
所以两个线程都应该返回一个新的数据帧,并且在两个线程完成后,我想连接从两个线程返回的两个结果。
我怎样才能做到这一点?如何从run()
函数返回任何对象,我如何在我的thread1
对象中访问它?
谢谢!
通过第一个答案更新但它不起作用,也存在缩进问题。
class myThread (threading.Thread):
def __init__(self, threadID, name, sleep, cust_type, data_inputs_train):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.sleep = sleep
self.cust_type = cust_type
self.data_inputs_train = data_inputs_train
#here i need to get the newPandasDataFrame object.
result_df = fdp.optimze_score_and_cl(data_inputs_train)
def returnTheData(self):
return result_df
解决方案
所以这是你的程序的基础。我只是使用示例数据来展示你如何设置它
def myFunction(x):
df = pd.DataFrame(['1', '2'], columns = ['A'])
return df
class myThreads(threading.Thread):
def __init__(self, threadID, name, sleep, cust_type, data_inputs_train):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.sleep = sleep
self.cust_type = cust_type
# call the methods you need on your data...
self.data_inputs_train = myFunction(data_inputs_train)
def returnTheData(self):
return self.data_inputs_train
df = pd.DataFrame(['1'], columns = ['A'])
thread1 = myThreads(1, "EX1", 1, 'EX', df)
thread2 = myThreads(2, "IN1", 2, 'IN', df)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
df1 = thread1.returnTheData()
df2 = thread2.returnTheData()
print(df1)
print(df2)
您声明您的线程..启动它们并基本上让它们运行您想要的任何东西..
加入()
允许主函数等待,直到所有线程完成它们的处理。
df2 = thread2.returnTheData()
你只需调用一个函数来返回你需要的数据。
工作代码
推荐阅读
- c++ - 从 string 到 const wchar_t* 的类型转换。类型不匹配
- java - Spring @Component 创建顺序
- reactjs - 在客户端和服务器之间共享 GraphQL 模式
- mysql - 如何避免 MySQL 中 where 子句中的语句重复?
- jupyter - 更宽的点cuxfilter / Datashader scatter?
- javascript - 带有线程暂停/恢复的 Javascript 对话框
- php - 调用 php 页面并在该页面上执行 JavaScript
- java - 如何通过在 Java 中恢复数据来设置 int 值
- python - 从数据框列表中查找匹配项。Stupid Backoff 算法的实现
- typescript - 打字稿中的类型安全字典