在Python中,创建多进程可以通过以下几种方法:
1. 使用`multiprocessing.Process`类:
from multiprocessing import Process
def task_function(arg1, arg2):
执行任务
print(f"Process {os.getpid()} is running with args {arg1} and {arg2}")
if __name__ == "__main__":
process1 = Process(target=task_function, args=("hello", "world"))
process2 = Process(target=task_function, args=("goodbye", "world"))
process1.start()
process2.start()
process1.join()
process2.join()
2. 使用`multiprocessing.Pool`创建进程池:
from multiprocessing import Pool
def task_function(args):
执行任务
print(f"Process {os.getpid()} is running with args {args}")
if __name__ == "__main__":
with Pool(processes=2) as pool:
pool.map(task_function, [("hello", "world"), ("goodbye", "world")])
3. 通过继承`multiprocessing.Process`类创建自定义进程:
from multiprocessing import Process
class MyProcess(Process):
def __init__(self, arg1, arg2):
super().__init__()
self.arg1 = arg1
self.arg2 = arg2
def run(self):
执行任务
print(f"Process {os.getpid()} is running with args {self.arg1} and {self.arg2}")
if __name__ == "__main__":
process1 = MyProcess("hello", "world")
process2 = MyProcess("goodbye", "world")
process1.start()
process2.start()
process1.join()
process2.join()
4. 使用`multiprocessing.Pipe`进行进程间通信:
from multiprocessing import Process, Pipe
def sender(conn):
conn.send(["hello", "world"])
conn.close()
def receiver(conn):
message = conn.recv()
print(f"Received: {message}")
conn.close()
if __name__ == "__main__":
parent_conn, child_conn = Pipe()
process1 = Process(target=sender, args=(child_conn,))
process2 = Process(target=receiver, args=(parent_conn,))
process1.start()
process2.start()
process1.join()
process2.join()
以上是Python中创建多进程的几种常见方法。请根据具体需求选择合适的方法