我正在使用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
声明相反吗?
答案 0 :(得分:0)
您说您首先启动流程1,然后启动流程2.但您没有采取任何措施来确保流程1首先获取信号量。可能很容易就是流程1运行一段时间但尚未获取信号量,然后流程2运行完成。
如果要确保进程1在进程2之前运行,则需要等待进程2,直到进程1获取了信号量。但是当然在那时你也可以在开始流程2之前等待流程1运行完成。