Python论坛  - 讨论区

标题:[python-chinese] 问一个关于进程锁的问题。

2005年07月28日 星期四 00:58

DIrk archive.it at gmail.com
Thu Jul 28 00:58:33 HKT 2005

各位兄弟,

用什么方法防止同一个脚本的多个实例运行?

Thanks.

DIrk
http://www.dirkye.com

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 14:28

limodou limodou at gmail.com
Thu Jul 28 14:28:49 HKT 2005

方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。

通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。

在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> 各位兄弟,
> 
> 用什么方法防止同一个脚本的多个实例运行?
> 
> Thanks.
> 
> DIrk
> http://www.dirkye.com
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 14:43

shhgs shhgs.efhilt at gmail.com
Thu Jul 28 14:43:10 HKT 2005

limodou,id文件的方法我听说,只是不知道该怎样建。

是不是就是在程序里面加一行
f = file('id_filename', 'w')
然后到程序退出的时候再
f.close()
os.unlink('id_filename')



On 7/28/05, limodou <limodou at gmail.com> wrote:
> 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> 
> 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> 
> 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > 各位兄弟,
> >
> > 用什么方法防止同一个脚本的多个实例运行?
> >
> > Thanks.
> >
> > DIrk
> > http://www.dirkye.com
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 14:47

苏州长风网络 kinnsei at gmail.com
Thu Jul 28 14:47:18 HKT 2005

谁有FREE的好空间啊,谢谢了!!

在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> limodou,id文件的方法我听说,只是不知道该怎样建。
> 
> 是不是就是在程序里面加一行
> f = file('id_filename', 'w')
> 然后到程序退出的时候再
> f.close()
> os.unlink('id_filename')
> 
> 
> 
> On 7/28/05, limodou <limodou at gmail.com> wrote:
> > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> >
> > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> >
> > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > 各位兄弟,
> > >
> > > 用什么方法防止同一个脚本的多个实例运行?
> > >
> > > Thanks.
> > >
> > > DIrk
> > > http://www.dirkye.com
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
苏州长风网络
联系电话:0512-62216515 联系人:金先生
QQ:104609351 
MSN:kinnsei1 at hotmail.com
skype:kinnsei98

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 15:01

limodou limodou at gmail.com
Thu Jul 28 15:01:36 HKT 2005

这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:

http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx

不过这个方法只适用于*nix。

在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> limodou,id文件的方法我听说,只是不知道该怎样建。
> 
> 是不是就是在程序里面加一行
> f = file('id_filename', 'w')
> 然后到程序退出的时候再
> f.close()
> os.unlink('id_filename')
> 
> 
> 
> On 7/28/05, limodou <limodou at gmail.com> wrote:
> > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> >
> > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> >
> > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > 各位兄弟,
> > >
> > > 用什么方法防止同一个脚本的多个实例运行?
> > >
> > > Thanks.
> > >
> > > DIrk
> > > http://www.dirkye.com
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 22:44

DIrk archive.it at gmail.com
Thu Jul 28 22:44:28 HKT 2005

我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。

我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?

Thanks.



On 7/28/05, limodou <limodou at gmail.com> wrote:
> 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> 
> http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> 
> 不过这个方法只适用于*nix。
> 
> 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > limodou,id文件的方法我听说,只是不知道该怎样建。
> >
> > 是不是就是在程序里面加一行
> > f = file('id_filename', 'w')
> > 然后到程序退出的时候再
> > f.close()
> > os.unlink('id_filename')
> >
> >
> >
> > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > >
> > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > >
> > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > 各位兄弟,
> > > >
> > > > 用什么方法防止同一个脚本的多个实例运行?
> > > >
> > > > Thanks.
> > > >
> > > > DIrk
> > > > http://www.dirkye.com
> > > >
> > > > _______________________________________________
> > > > python-chinese list
> > > > python-chinese at lists.python.cn
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > I like python!
> > > My Donews Blog: http://www.donews.net/limodou
> > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 23:10

limodou limodou at gmail.com
Thu Jul 28 23:10:33 HKT 2005

如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。

在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> 
> 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> 
> Thanks.
> 
> 
> 
> On 7/28/05, limodou <limodou at gmail.com> wrote:
> > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> >
> > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> >
> > 不过这个方法只适用于*nix。
> >
> > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > >
> > > 是不是就是在程序里面加一行
> > > f = file('id_filename', 'w')
> > > 然后到程序退出的时候再
> > > f.close()
> > > os.unlink('id_filename')
> > >
> > >
> > >
> > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > >
> > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > >
> > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > 各位兄弟,
> > > > >
> > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > >
> > > > > Thanks.
> > > > >
> > > > > DIrk
> > > > > http://www.dirkye.com
> > > > >
> > > > > _______________________________________________
> > > > > python-chinese list
> > > > > python-chinese at lists.python.cn
> > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > I like python!
> > > > My Donews Blog: http://www.donews.net/limodou
> > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > >
> > > > _______________________________________________
> > > > python-chinese list
> > > > python-chinese at lists.python.cn
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 23:15

DIrk archive.it at gmail.com
Thu Jul 28 23:15:53 HKT 2005

看了你的文章,修改了一下程序,这几天看一下运行情况。

我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。

Thanks.


On 7/28/05, limodou <limodou at gmail.com> wrote:
> 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> 
> 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> >
> > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> >
> > Thanks.
> >
> >
> >
> > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > >
> > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > >
> > > 不过这个方法只适用于*nix。
> > >
> > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > >
> > > > 是不是就是在程序里面加一行
> > > > f = file('id_filename', 'w')
> > > > 然后到程序退出的时候再
> > > > f.close()
> > > > os.unlink('id_filename')
> > > >
> > > >
> > > >
> > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > >
> > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > >
> > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > 各位兄弟,
> > > > > >
> > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > >
> > > > > > Thanks.
> > > > > >
> > > > > > DIrk
> > > > > > http://www.dirkye.com
> > > > > >
> > > > > > _______________________________________________
> > > > > > python-chinese list
> > > > > > python-chinese at lists.python.cn
> > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > I like python!
> > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > >
> > > > > _______________________________________________
> > > > > python-chinese list
> > > > > python-chinese at lists.python.cn
> > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > > >
> > > >
> > >
> > >
> > > --
> > > I like python!
> > > My Donews Blog: http://www.donews.net/limodou
> > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 23:28

limodou limodou at gmail.com
Thu Jul 28 23:28:21 HKT 2005

那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。

在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> 看了你的文章,修改了一下程序,这几天看一下运行情况。
> 
> 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。
> 
> Thanks.
> 
> 
> On 7/28/05, limodou <limodou at gmail.com> wrote:
> > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> >
> > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> > >
> > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> > >
> > > Thanks.
> > >
> > >
> > >
> > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > > >
> > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > > >
> > > > 不过这个方法只适用于*nix。
> > > >
> > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > > >
> > > > > 是不是就是在程序里面加一行
> > > > > f = file('id_filename', 'w')
> > > > > 然后到程序退出的时候再
> > > > > f.close()
> > > > > os.unlink('id_filename')
> > > > >
> > > > >
> > > > >
> > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > > >
> > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > > >
> > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > 各位兄弟,
> > > > > > >
> > > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > > >
> > > > > > > Thanks.
> > > > > > >
> > > > > > > DIrk
> > > > > > > http://www.dirkye.com
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > python-chinese list
> > > > > > > python-chinese at lists.python.cn
> > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > I like python!
> > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > >
> > > > > > _______________________________________________
> > > > > > python-chinese list
> > > > > > python-chinese at lists.python.cn
> > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > I like python!
> > > > My Donews Blog: http://www.donews.net/limodou
> > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > >
> > > > _______________________________________________
> > > > python-chinese list
> > > > python-chinese at lists.python.cn
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月28日 星期四 23:35

DIrk archive.it at gmail.com
Thu Jul 28 23:35:43 HKT 2005

至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。

Thanks.


On 7/28/05, limodou <limodou at gmail.com> wrote:
> 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。
> 
> 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > 看了你的文章,修改了一下程序,这几天看一下运行情况。
> >
> > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。
> >
> > Thanks.
> >
> >
> > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> > >
> > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> > > >
> > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> > > >
> > > > Thanks.
> > > >
> > > >
> > > >
> > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > > > >
> > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > > > >
> > > > > 不过这个方法只适用于*nix。
> > > > >
> > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > > > >
> > > > > > 是不是就是在程序里面加一行
> > > > > > f = file('id_filename', 'w')
> > > > > > 然后到程序退出的时候再
> > > > > > f.close()
> > > > > > os.unlink('id_filename')
> > > > > >
> > > > > >
> > > > > >
> > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > > > >
> > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > > > >
> > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > > 各位兄弟,
> > > > > > > >
> > > > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > > > >
> > > > > > > > Thanks.
> > > > > > > >
> > > > > > > > DIrk
> > > > > > > > http://www.dirkye.com
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > python-chinese list
> > > > > > > > python-chinese at lists.python.cn
> > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > I like python!
> > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > python-chinese list
> > > > > > > python-chinese at lists.python.cn
> > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > I like python!
> > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > >
> > > > > _______________________________________________
> > > > > python-chinese list
> > > > > python-chinese at lists.python.cn
> > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > > >
> > > >
> > >
> > >
> > > --
> > > I like python!
> > > My Donews Blog: http://www.donews.net/limodou
> > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月29日 星期五 03:16

shhgs shhgs.efhilt at gmail.com
Fri Jul 29 03:16:48 HKT 2005

文件怎么加锁。像这样简单创建一个文件,别人可以修改。

On 7/28/05, DIrk <archive.it at gmail.com> wrote:
> 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。
> 
> Thanks.
> 
> 
> On 7/28/05, limodou <limodou at gmail.com> wrote:
> > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。
> >
> > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > 看了你的文章,修改了一下程序,这几天看一下运行情况。
> > >
> > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。
> > >
> > > Thanks.
> > >
> > >
> > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> > > >
> > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> > > > >
> > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> > > > >
> > > > > Thanks.
> > > > >
> > > > >
> > > > >
> > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > > > > >
> > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > > > > >
> > > > > > 不过这个方法只适用于*nix。
> > > > > >
> > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > > > > >
> > > > > > > 是不是就是在程序里面加一行
> > > > > > > f = file('id_filename', 'w')
> > > > > > > 然后到程序退出的时候再
> > > > > > > f.close()
> > > > > > > os.unlink('id_filename')
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > > > > >
> > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > > > > >
> > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > > > 各位兄弟,
> > > > > > > > >
> > > > > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > > > > >
> > > > > > > > > Thanks.
> > > > > > > > >
> > > > > > > > > DIrk
> > > > > > > > > http://www.dirkye.com
> > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > python-chinese list
> > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > I like python!
> > > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > python-chinese list
> > > > > > > > python-chinese at lists.python.cn
> > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > I like python!
> > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > >
> > > > > > _______________________________________________
> > > > > > python-chinese list
> > > > > > python-chinese at lists.python.cn
> > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > I like python!
> > > > My Donews Blog: http://www.donews.net/limodou
> > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > >
> > > > _______________________________________________
> > > > python-chinese list
> > > > python-chinese at lists.python.cn
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月29日 星期五 08:31

limodou limodou at gmail.com
Fri Jul 29 08:31:37 HKT 2005

文件加锁有专门的方法。unix有fcntl模块可以干这个。windows下应该也有,不过不知道python下如何处理。

在 05-7-29,shhgs<shhgs.efhilt at gmail.com> 写道:
> 文件怎么加锁。像这样简单创建一个文件,别人可以修改。
> 
> On 7/28/05, DIrk <archive.it at gmail.com> wrote:
> > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。
> >
> > Thanks.
> >
> >
> > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。
> > >
> > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。
> > > >
> > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。
> > > >
> > > > Thanks.
> > > >
> > > >
> > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> > > > >
> > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> > > > > >
> > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> > > > > >
> > > > > > Thanks.
> > > > > >
> > > > > >
> > > > > >
> > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > > > > > >
> > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > > > > > >
> > > > > > > 不过这个方法只适用于*nix。
> > > > > > >
> > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > > > > > >
> > > > > > > > 是不是就是在程序里面加一行
> > > > > > > > f = file('id_filename', 'w')
> > > > > > > > 然后到程序退出的时候再
> > > > > > > > f.close()
> > > > > > > > os.unlink('id_filename')
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > > > > > >
> > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > > > > > >
> > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > > > > 各位兄弟,
> > > > > > > > > >
> > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > > > > > >
> > > > > > > > > > Thanks.
> > > > > > > > > >
> > > > > > > > > > DIrk
> > > > > > > > > > http://www.dirkye.com
> > > > > > > > > >
> > > > > > > > > > _______________________________________________
> > > > > > > > > > python-chinese list
> > > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > I like python!
> > > > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > python-chinese list
> > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > I like python!
> > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > python-chinese list
> > > > > > > python-chinese at lists.python.cn
> > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > I like python!
> > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > >
> > > > > _______________________________________________
> > > > > python-chinese list
> > > > > python-chinese at lists.python.cn
> > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > > >
> > > >
> > >
> > >
> > > --
> > > I like python!
> > > My Donews Blog: http://www.donews.net/limodou
> > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月29日 星期五 14:37

shhgs shhgs.efhilt at gmail.com
Fri Jul 29 14:37:54 HKT 2005

这是这个礼拜第二次看到fcntl模块了。

我看文档看得云山雾罩的,它只说用一个fd,一个op然后做操作。但是具体有哪些op,能干什么,我一点都没概念。现在我知道第一个用途,就是给文件加锁。那么请问怎样加锁。

我看了一下linux的man,一点头绪都没有。limodou,能否给一段代码?

此外,看文档,发现os.open有很多flag的参数,是不是可以给文件加锁?

On 7/28/05, limodou <limodou at gmail.com> wrote:
> 文件加锁有专门的方法。unix有fcntl模块可以干这个。windows下应该也有,不过不知道python下如何处理。
> 
> 在 05-7-29,shhgs<shhgs.efhilt at gmail.com> 写道:
> > 文件怎么加锁。像这样简单创建一个文件,别人可以修改。
> >
> > On 7/28/05, DIrk <archive.it at gmail.com> wrote:
> > > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。
> > >
> > > Thanks.
> > >
> > >
> > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。
> > > >
> > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。
> > > > >
> > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。
> > > > >
> > > > > Thanks.
> > > > >
> > > > >
> > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> > > > > >
> > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> > > > > > >
> > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> > > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> > > > > > >
> > > > > > > Thanks.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > > > > > > >
> > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > > > > > > >
> > > > > > > > 不过这个方法只适用于*nix。
> > > > > > > >
> > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > > > > > > >
> > > > > > > > > 是不是就是在程序里面加一行
> > > > > > > > > f = file('id_filename', 'w')
> > > > > > > > > 然后到程序退出的时候再
> > > > > > > > > f.close()
> > > > > > > > > os.unlink('id_filename')
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > > > > > > >
> > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > > > > > > >
> > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > > > > > 各位兄弟,
> > > > > > > > > > >
> > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > > > > > > >
> > > > > > > > > > > Thanks.
> > > > > > > > > > >
> > > > > > > > > > > DIrk
> > > > > > > > > > > http://www.dirkye.com
> > > > > > > > > > >
> > > > > > > > > > > _______________________________________________
> > > > > > > > > > > python-chinese list
> > > > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > I like python!
> > > > > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > > > > >
> > > > > > > > > > _______________________________________________
> > > > > > > > > > python-chinese list
> > > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > I like python!
> > > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > python-chinese list
> > > > > > > > python-chinese at lists.python.cn
> > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > I like python!
> > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > >
> > > > > > _______________________________________________
> > > > > > python-chinese list
> > > > > > python-chinese at lists.python.cn
> > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > I like python!
> > > > My Donews Blog: http://www.donews.net/limodou
> > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > >
> > > > _______________________________________________
> > > > python-chinese list
> > > > python-chinese at lists.python.cn
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月29日 星期五 14:40

shhgs shhgs.efhilt at gmail.com
Fri Jul 29 14:40:59 HKT 2005

DIrk

Unix下有一个pgrep命令,用来找pid很方便。

Python里面可以这样获取进程的pid

pid = os.tcgetpgrep(0)

这里0是一个file descriptor,表示stdin,每个进程都有的。

On 7/28/05, DIrk <archive.it at gmail.com> wrote:
> 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。
> 
> Thanks.
> 
> 
> On 7/28/05, limodou <limodou at gmail.com> wrote:
> > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。
> >
> > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > 看了你的文章,修改了一下程序,这几天看一下运行情况。
> > >
> > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。
> > >
> > > Thanks.
> > >
> > >
> > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> > > >
> > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> > > > >
> > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> > > > >
> > > > > Thanks.
> > > > >
> > > > >
> > > > >
> > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > > > > >
> > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > > > > >
> > > > > > 不过这个方法只适用于*nix。
> > > > > >
> > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > > > > >
> > > > > > > 是不是就是在程序里面加一行
> > > > > > > f = file('id_filename', 'w')
> > > > > > > 然后到程序退出的时候再
> > > > > > > f.close()
> > > > > > > os.unlink('id_filename')
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > > > > >
> > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > > > > >
> > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > > > 各位兄弟,
> > > > > > > > >
> > > > > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > > > > >
> > > > > > > > > Thanks.
> > > > > > > > >
> > > > > > > > > DIrk
> > > > > > > > > http://www.dirkye.com
> > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > python-chinese list
> > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > I like python!
> > > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > python-chinese list
> > > > > > > > python-chinese at lists.python.cn
> > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > I like python!
> > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > >
> > > > > > _______________________________________________
> > > > > > python-chinese list
> > > > > > python-chinese at lists.python.cn
> > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > I like python!
> > > > My Donews Blog: http://www.donews.net/limodou
> > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > >
> > > > _______________________________________________
> > > > python-chinese list
> > > > python-chinese at lists.python.cn
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月29日 星期五 15:23

limodou limodou at gmail.com
Fri Jul 29 15:23:22 HKT 2005

fd就是fileno()也就是底层的文件句柄。它是一个数字,而不是一个对象。它可以通过f.fileno() 来得到。
op就是option,其实是许多的标志位的宏。象文档中举了:

LOCK_UN - unlock 
LOCK_SH - acquire a shared lock 
LOCK_EX - acquire an exclusive lock 

它是与C中的相应的宏对应的。查一查C的手册应该可以了解了。fcntl功能很多,我也没怎么用过。


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月29日 星期五 16:21

RichardLee RichardLee at e28.com
Fri Jul 29 16:21:42 HKT 2005

拼错了,应该是pid = os.tcgetpgrp(0)。Windows下不能用,Linux下可以!

Best Regards
Richard Lee (李富足)
 
T&P; Department, E28 Ltd.
Tel: 86-21-23060088, Ext: 359.
-----邮件原件-----
发件人: python-chinese-bounces at lists.python.cn
[mailto:python-chinese-bounces at lists.python.cn] 代表 shhgs
发送时间: 2005年7月29日 14:41
收件人: DIrk; python-chinese at lists.python.cn
主题: Re: [python-chinese] 问一个关于进程锁的问题。

DIrk

Unix下有一个pgrep命令,用来找pid很方便。

Python里面可以这样获取进程的pid

pid = os.tcgetpgrep(0)

这里0是一个file descriptor,表示stdin,每个进程都有的。

On 7/28/05, DIrk <archive.it at gmail.com> wrote:
> 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而
ps -p方式错误的几率应该可以忽略。
> 
> Thanks.
> 
> 
> On 7/28/05, limodou <limodou at gmail.com> wrote:
> > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一
些。
> >
> > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > 看了你的文章,修改了一下程序,这几天看一下运行情况。
> > >
> > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过
滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid
是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。
> > >
> > > Thanks.
> > >
> > >
> > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用
原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> > > >
> > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程
是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲
突。
> > > > >
> > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,
通过ps pid | grep |
> > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测
方法?
> > > > >
> > > > > Thanks.
> > > > >
> > > > >
> > > > >
> > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > > > > >
> > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > > > > >
> > > > > > 不过这个方法只适用于*nix。
> > > > > >
> > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > > > > >
> > > > > > > 是不是就是在程序里面加一行
> > > > > > > f = file('id_filename', 'w')
> > > > > > > 然后到程序退出的时候再
> > > > > > > f.close()
> > > > > > > os.unlink('id_filename')
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用
mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > > > > >
> > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket
server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > > > > >
> > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > > > 各位兄弟,
> > > > > > > > >
> > > > > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > > > > >
> > > > > > > > > Thanks.
> > > > > > > > >
> > > > > > > > > DIrk
> > > > > > > > > http://www.dirkye.com
> > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > python-chinese list
> > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > I like python!
> > > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > > New Google Maillist:
http://groups-beta.google.com/group/python-cn
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > python-chinese list
> > > > > > > > python-chinese at lists.python.cn
> > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > I like python!
> > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > New Google Maillist:
http://groups-beta.google.com/group/python-cn
> > > > > >
> > > > > > _______________________________________________
> > > > > > python-chinese list
> > > > > > python-chinese at lists.python.cn
> > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > I like python!
> > > > My Donews Blog: http://www.donews.net/limodou
> > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > >
> > > > _______________________________________________
> > > > python-chinese list
> > > > python-chinese at lists.python.cn
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月29日 星期五 16:51

Li Jie cpunion at gmail.com
Fri Jul 29 16:51:55 HKT 2005

GOD!!!

这么长的邮件?线索也没了。

把引用的内容修剪一下啊。有没有办法不让列表自动加那几行?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月30日 星期六 21:59

DIrk archive.it at gmail.com
Sat Jul 30 21:59:36 HKT 2005

Python cookbook中有介绍,以下代码示例:

import os
# needs win32all to work on Windows (NT, 2K, XP, _not_ /95 or /98)
if os.name == 'nt':
    import win32con, win32file, pywintypes
    LOCK_EX = win32con.LOCKFILE_EXCLUSIVE_LOCK
    LOCK_SH = 0 # the default
    LOCK_NB = win32con.LOCKFILE_FAIL_IMMEDIATELY
    _ _overlapped = pywintypes.OVERLAPPED( )
    def lock(file, flags):
        hfile = win32file._get_osfhandle(file.fileno( ))
        win32file.LockFileEx(hfile, flags, 0, 0xffff0000, _ _overlapped)
    def unlock(file):
        hfile = win32file._get_osfhandle(file.fileno( ))
        win32file.UnlockFileEx(hfile, 0, 0xffff0000, _ _overlapped)
elif os.name == 'posix':
    from fcntl import LOCK_EX, LOCK_SH, LOCK_NB
    def lock(file, flags):
        fcntl.flock(file.fileno( ), flags)
    def unlock(file):
        fcntl.flock(file.fileno( ), fcntl.LOCK_UN)
else:
    raise RuntimeError("PortaLocker only defined for nt and posix platforms")


DIrk
http://www.dirkye.com



On 7/29/05, shhgs <shhgs.efhilt at gmail.com> wrote:
> 这是这个礼拜第二次看到fcntl模块了。
> 
> 我看文档看得云山雾罩的,它只说用一个fd,一个op然后做操作。但是具体有哪些op,能干什么,我一点都没概念。现在我知道第一个用途,就是给文件加锁。那么请问怎样加锁。
> 
> 我看了一下linux的man,一点头绪都没有。limodou,能否给一段代码?
> 
> 此外,看文档,发现os.open有很多flag的参数,是不是可以给文件加锁?
> 
> On 7/28/05, limodou <limodou at gmail.com> wrote:
> > 文件加锁有专门的方法。unix有fcntl模块可以干这个。windows下应该也有,不过不知道python下如何处理。
> >
> > 在 05-7-29,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > 文件怎么加锁。像这样简单创建一个文件,别人可以修改。
> > >
> > > On 7/28/05, DIrk <archive.it at gmail.com> wrote:
> > > > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。
> > > >
> > > > Thanks.
> > > >
> > > >
> > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。
> > > > >
> > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。
> > > > > >
> > > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。
> > > > > >
> > > > > > Thanks.
> > > > > >
> > > > > >
> > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。
> > > > > > >
> > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。
> > > > > > > >
> > > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep |
> > > > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法?
> > > > > > > >
> > > > > > > > Thanks.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的:
> > > > > > > > >
> > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx
> > > > > > > > >
> > > > > > > > > 不过这个方法只适用于*nix。
> > > > > > > > >
> > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道:
> > > > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。
> > > > > > > > > >
> > > > > > > > > > 是不是就是在程序里面加一行
> > > > > > > > > > f = file('id_filename', 'w')
> > > > > > > > > > 然后到程序退出的时候再
> > > > > > > > > > f.close()
> > > > > > > > > > os.unlink('id_filename')
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote:
> > > > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。
> > > > > > > > > > >
> > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。
> > > > > > > > > > >
> > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道:
> > > > > > > > > > > > 各位兄弟,
> > > > > > > > > > > >
> > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行?
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks.
> > > > > > > > > > > >
> > > > > > > > > > > > DIrk
> > > > > > > > > > > > http://www.dirkye.com
> > > > > > > > > > > >
> > > > > > > > > > > > _______________________________________________
> > > > > > > > > > > > python-chinese list
> > > > > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > I like python!
> > > > > > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > > > > > >
> > > > > > > > > > > _______________________________________________
> > > > > > > > > > > python-chinese list
> > > > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > I like python!
> > > > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > python-chinese list
> > > > > > > > > python-chinese at lists.python.cn
> > > > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > I like python!
> > > > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > python-chinese list
> > > > > > > python-chinese at lists.python.cn
> > > > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > I like python!
> > > > > My Donews Blog: http://www.donews.net/limodou
> > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn
> > > > >
> > > > > _______________________________________________
> > > > > python-chinese list
> > > > > python-chinese at lists.python.cn
> > > > > http://python.cn/mailman/listinfo/python-chinese
> > > > >
> > > > >
> > > > >
> > > >
> > > > _______________________________________________
> > > > python-chinese list
> > > > python-chinese at lists.python.cn
> > > > http://python.cn/mailman/listinfo/python-chinese
> > > >
> > > >
> > > >
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号