from multiprocessing.dummy import Pool as ThreadPool
pt = ThreadPool(4)
results = pt.map(pt_function, pt_array)
或者这样(如果您有许多线程脚本):
from Threading_orders import Thread
class First_time(Thread):
"""
A threading example
"""
def __init__(self, a, b):
"""Инициализация потока"""
Thread.__init__(self)
self.a = a
self.b = b
def run(self):
MyThread_1(self.a, self.b)
MyThread_2(self.a, self.b)
MyThread_3(self.a, self.b)
这可能不是完整的答案,因为这是代码的一部分,但可能是一个起点。使用multiprocessing模块可以创建一个工作线程池,然后使用subprocess模块可以为每个工作线程和check the output调用脚本的一个实例:
import multiprocessing as mp
import subprocess as sp
# an example with two runs
commands = ['python test.py', 'python test.py']
# pass the number of threads that will be working
# if the number of threads < len(commands) the exceed
# will run in sequence when some process terminate
pool = mp.Pool(processes=2)
# execute the script calls
res = pool.map(sp.check_output, commands)
print(*[item.decode() for item in res])
pool.close()
注意:从check_output返回的是一个byte string,因此需要将它转换回string
我用以下简单的程序进行了测试:
import time
if __name__ == "__main__":
print("Running an instance at {}".format(time.ctime()))
time.sleep(2)
print("Finished at {}".format(time.ctime()))
这就是输出:
Running an instance at Thu Oct 11 23:21:44 2018
Finished at Thu Oct 11 23:21:46 2018
Running an instance at Thu Oct 11 23:21:44 2018
Finished at Thu Oct 11 23:21:46 2018
我想你需要这个:
或者这样(如果您有许多线程脚本):
这可能不是完整的答案,因为这是代码的一部分,但可能是一个起点。使用multiprocessing
模块可以创建一个工作线程池,然后使用subprocess
模块可以为每个工作线程和check the output调用脚本的一个实例:注意:从
check_output
返回的是一个byte string
,因此需要将它转换回string
我用以下简单的程序进行了测试:
这就是输出:
正如你所看到的,它们同时运行。你知道吗
相关问题 更多 >
编程相关推荐