我在一个由另一个.py
文件激活的类中有一个函数。这个函数只是用来同时运行另外两个不同的函数。
它在Ubuntu上运行良好,但在Windows上则不然。有没有办法在两个系统上都有相同的结果(可能有不同的代码(?
import multiprocessing
import time
class myClass:
def run_functions(self, var1):
self.p1 = multiprocessing.Process(target=self.first_function, args=[var1])
self.p2 = multiprocessing.Process(target=self.second_function)
self.p1.start()
self.p2.start()
def first_function(self, var1):
print('First function activated ' + var1)
time.sleep(2)
def second_function(self):
print('Second function activated')
x = myClass()
x.run_functions('10') #Normally activated from another .py file with a list
我不介意用线程代替。它只需要工作!
我在Windows上开始执行多处理时也遇到了同样的问题。问题在于Windows产生不同于UNIX的新进程的方式。搜索";安全自导入";。
最简单的方法是将first_function
和second_function
导出到一个单独的模块中,然后在文件的开头导入该模块。我在另一个主题中描述了解决方案:https://stackoverflow.com/a/29751273/4141279