流程并行运行时的打印顺序

时间:2018-02-24 06:21:57

标签: python python-2.7

我正在使用python SELECT c.EmailAddress, o.OrderID, o.TaxAmount, o.OrderDate AS LatestOrder FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY CustomerID ORDER BY OrderDate DESC) Seq FROM Orders WHERE TaxAmount > 100 ) o INNER JOIN Customers c ON c.CustomerID = o.CustomerID WHERE o.Seq = 1 并行运行2个进程并使用信号量同步它们。以下是我的示例代码

multiprocessing

我首先使用py def process1(): acquireSema() dowork() releaseSema() print "sema released" def process2(): acquireSema() print "sema acquired" dowork() releaseSema() 启动process1然后process2启动multiprocessing。我的问题是我的print声明无序。我得到以下输出

sema acquired
sema released

订单不应该与print声明相反吗?

1 个答案:

答案 0 :(得分:0)

您说您首先启动流程1,然后启动流程2.但您没有采取任何措施来确保流程1首先获取信号量。可能很容易就是流程1运行一段时间但尚未获取信号量,然后流程2运行完成。

如果要确保进程1在进程2之前运行,则需要等待进程2,直到进程1获取了信号量。但是当然在那时你也可以在开始流程2之前等待流程1运行完成。