Why is iterating a group different than iterating a collection in linq
Tag : chash , By : Pitmairen
Date : March 29 2020, 07:55 AM
Hope this helps In the query below it is easy to see how we are basically looping through sampleOrders and evaluating each order i.e. we can access the properties of ord: from ord in sampleOrders
group ord by ord.Product into orderGroups
from grp in orderGroups
select grp
sampleOrders.GroupBy(ord => ord.Product)
.Select(grp => grp); // grp is an `IGrouping<,>`
sampleOrders.GroupBy(ord => ord.Product)
.SelectMany(orderGroup => orderGroup); // orderGroup is an `IGrouping<,>`
.Select(grp => grp); // grp is an Order
from x1 in e1
from x2 in e2
select v
( e1 ) . SelectMany( x1 => e2 , ( x1 , x2 ) => v )
from a in x
from b in a
select b
var orderGroups = // orderGroups is plural: IEnumerable<IGrouping<,>>
from ord in sampleOrders
group ord by ord.Product;
var o =
from orderGroup in orderGroups // orderGroup is singular: IGrouping<,>
from item in orderGroup // `item` instead of `grp`
select item;
var o =
from ord in sampleOrders
group ord by ord.Product into orderGroup
from item in orderGroup
select item; // item is an order, not a group of orders
|
python threads - always have x active threads when iterating over n tasks
Tag : python , By : Daljit Dhadwal
Date : March 29 2020, 07:55 AM
Hope this helps What I basically want to do is the following: , You can use a thread pool for this: import threading
from multiprocessing.pool import ThreadPool
def test_thread(elem):
return elem ** 2
a = [1,2,3,4,5,6,7,8]
pool = ThreadPool(2) # 2 worker threads
results = []
for x in range(8):
print x
results.append(pool.apply_async(test_thread, args=(a[x],)))
results = [result.get() for result in results]
# You can also replace this for loop altogether using pool.map
# and get the same result:
# results = pool.map(test_thread, range(8))
print(results)
0
1
2
3
4
5
6
7
[1, 4, 9, 16, 25, 36, 49, 64]
|
Unwanted display of collection object after iterating through the collection in a view
Date : March 29 2020, 07:55 AM
I hope this helps . In erb, <%= %> will display whatever that line of code returns. While <% %> just executes the line of code. Change <%= tag_cloud @tags, %w[s m l ] do |tag, css_class| %> to <% tag_cloud @tags, %w[s m l ] do |tag, css_class| %> and the object won't be displayed.
|
Iterating an RDD and updating a mutable collection returns an empty collection
Date : March 29 2020, 07:55 AM
Hope this helps Spark is a distributed computing engine. Next to "what the code is doing" of classic single-node computing, with Spark we also need to consider "where the code is running" Let's inspect a simplified version of the expression above: val records: RDD[List[String]] = ??? //whatever data
var list:mutable.List[String] = List()
for {record <- records
entry <- records }
{ list += entry }
records.foreach{ record => //RDD.foreach => serializes closure and executes remotely
record.foreach{entry => //record.foreach => local operation on the record collection
list += entry // this mutable list object is updated in each executor but never sent back to the driver. All updates are lost
}
}
def compareFields(colName:String, row1:Row, row2:Row): Option[DiscrepancyData] = {
val key = "year"
val v1 = row1.getAs(colName).toString
val v2 = row2.getAs(colName).toString
if (v1 != v2){
Some(DiscrepancyData(
row1.getAs(key).toString, //fieldKey
colName, //fieldName
v1, //table1Value
v2, //table2Value
v2) //expectedValue
)
} else None
}
val discrepancies = table.flatMap{case (str, row) =>
compareCols.flatMap{col => compareFields(col, row.next, row.next) }
}
val discrepancies = for {
(str,row) <- table
col <- compareCols
dis <- compareFields(col, row.next, row.next)
} yield dis
val materializedDiscrepancies = discrepancies.collect()
|
Does changing a item field in a Collection while iterating invalidates the collection?
Date : March 29 2020, 07:55 AM
|